#pragma once
#ifndef __LIT__TRIPLET_INCLUDED__HH__
#define __LIT__TRIPLET_INCLUDED__HH__

namespace Lit
{
	
	template<typename T0, typename T1, typename T2> 
	struct Triplet
	{
		T0 first;
		T1 second;
		T2 third;
		bool has_third;
			
		Triplet( ) : first(), second(), third(), has_third(false){}

		Triplet( T0 _first, T1 _second, T2 _third )
			: first(_first), second(_second), third(_third), has_third(true)
		{
		}
		Triplet( T0 _first, T1 _second )
			: first(_first), second(_second), third(), has_third(false)
		{
		}

		Triplet<T0,T1,T2>& operator=( const Triplet<T0,T1,T2>& other )
		{
			first = other.first;
			second = other.second;
			third = other.third;
			has_third = other.has_third;
			return *this;
		}
	};

};

#endif